# coding=utf-8
# @Author:zcx
# @Time:2024/9/12 10:36
import sys
from PySide6.QtWidgets import QWidget,QApplication,QVBoxLayout,QTreeWidget,QPushButton,QTreeWidgetItem,QLineEdit
"""
包含一个树形部件（QTreeWidget）和一个按钮（QPushButton）。点击按钮将在树形部件中添加一个顶层节点和一个子节点，并给它们设置文本和值。
关键的 QTreeWidget 方法和属性包括：
    setColumnCount(count): 设置树形部件的列数。
    setHeaderLabels(labels): 设置树形部件的列标签。
    addTopLevelItem(item): 添加顶层节点。
    setExpanded(expand): 设置节点的展开状态。
"""

class MyMainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setup_ui()

    def setup_ui(self):
        self.resize(600,400)
        # 设置垂直布局
        v_box = QVBoxLayout(self)
        add_btn = QPushButton("增加")
        # 创建树形结构窗口
        tree_widgets = QTreeWidget()
        # 设置属性结构的列数
        tree_widgets.setColumnCount(1)
        # 添加树形部件的列标签
        # tree_widgets.setHeaderLabels(['省', '市'])   # 同一行两列
        tree_widgets.setHeaderLabels(['省'])   # 一列

        # 添加输入框
        province_label = QLineEdit("省")
        city_label = QLineEdit("市")
        area_label = QLineEdit("县区")

        # 在窗口上添加组件
        v_box.addWidget(tree_widgets)
        v_box.addWidget(province_label)
        v_box.addWidget(city_label)
        # v_box.addWidget(area_label)
        v_box.addWidget(add_btn)

        self.tree_widgets = tree_widgets
        self.province = province_label
        self.city = city_label
        self.area = area_label

        # 给按钮绑定槽函数，实现添加功能
        add_btn.clicked.connect(self.add_item)

    def add_item(self):
        """添加树形结构的值"""
        pro_text = self.province.text()
        city_text = self.city.text()
        area_text = self.area.text()

        top_item = QTreeWidgetItem(self.tree_widgets)
        top_item.setText(0, pro_text)

        top_item.setText(1, city_text)
        top_item.setText(2, area_text)

        # 在顶层节点下添加子节点
        # 给top的第一列或第二列添加值
        c_item = QTreeWidgetItem(top_item)
        # 树形结构的同一列设置值会覆盖
        c_item.setText(0, city_text)
        # c_item.setText(0, "荥阳")

        # 展开顶层节点
        top_item.setExpanded(True)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyMainWindow()
    window.show()
    sys.exit(app.exec())